
#include <cstdlib>
#include "avatar.h"
#include "regex.h"
#include "timer.h"
#include "symphony.h"
#include "world.h"



/************************************************************ BASE CLASS ************************************************************/
Timer::Timer( void ) {
  enabled( true );
  when( time( NULL ) - 1 );
  lower( 60 );
  upper( 0 );
  times( -1 );
  name( "default" );
  return;
}

Timer::~Timer( void ) {
  data().clear();
  return;
}

void Timer::reset( void ) { // public
  time_t now = time( NULL );

  if ( upper() > lower() ) {
    when( now + ( rand() % (upper()-lower()) + lower() ) );
  } else {
    when( now + lower() );
  }

  return;
}

bool Timer::ready( void ) { // public
  return ( when() <= time( NULL ) );
}

/************************************************************ AUTOSAVE ************************************************************/
TmrAutosave::TmrAutosave( void ) {
  name( "Autosave" );
  lower( 900 );
  upper( 0 );
  reset();
  return;
}

TmrAutosave::~TmrAutosave( void ) {
  return;
}

bool TmrAutosave::fire( void ) { // public
  World::Instance().save();
  reset();
  return true;
}

/************************************************************ TICK ************************************************************/
TmrTick::TmrTick( void ) {
  name( "Tick" );
  lower( 60 );
  upper( 90 );
  reset();
  return;
}

TmrTick::~TmrTick( void ) {
  return;
}

bool TmrTick::fire( void ) { // public
  World::Instance().bigBrother( NULL, ADMIN_BIGBRO_EVENTS, "Tick!" );
  reset();
  return true;
}

